/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fait.ferm.engine;

import fait.ferm.global.Glob;
import fait.ferm.persists.Ferm;
import fait.ferm.persists.Game;
import fait.ferm.persists.Plan_details_equipment;
import fait.ferm.persists.Plan_details_pay;
import fait.ferm.persists.Plan_details_pay_credit;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Класс для параметров текущего плана
 * @author alex
 */
public class Plan {
    int plan_id = 1;
	private GregorianCalendar dateBeg;
	private GregorianCalendar dateEnd;
	private GregorianCalendar realizeDay;//дата до которой план выполнен
	private boolean realized; // true - план полностью выполнен
	
	//уход за животными ежедн
	//уход за животными разовый
	//выплаты
	//закупки материалов
	//платежи по кредитам
	//ремонт оборудования

    /**
	 * Метод возвращает данные по выплатам на оборудоване для текущего плана
	 * @return  ResultEngine, содержащий в поле <code>obj</code>, массив элементов типа 
     * {@link Plan_details_equipment Plan_details_equipment} (если успешно) или null и объект ошибки в поле <code>error</code>
	 */
    public ResultEngine getPlan_details_equipment() {
        ResultEngine res = null;
		Statement st = null;
		ResultSet rs = null;
		ArrayList<Plan_details_equipment> al = new ArrayList<>();
		try {
			st = Glob.getConnection().createStatement();
			String q = "SELECT id FROM plan_details_equipment WHERE plan_id=" + plan_id;
			rs = st.executeQuery(q);
			while(rs.next()){
				al.add(new Plan_details_equipment(rs.getInt("id")));
			}
            return new ResultEngine(al, GlobalEngine.E_NO_ERROR);
		} 
		catch (SQLException ex) {
			Logger.getLogger(FermEngine.class.getName()).log(Level.SEVERE, null, ex);
		}catch (Exception ex) {
			Logger.getLogger(FermEngine.class.getName()).log(Level.SEVERE, null, ex);
		}		
		finally {
			try {
				rs.close();
				st.close();
			} catch (SQLException ex) {
				Logger.getLogger(FermEngine.class.getName()).log(Level.SEVERE, null, ex);
			}
		}
		return new ResultEngine(null, GlobalEngine.E_OBJECT_NOT_FOUND);
    }
    
    /**
	 * Метод возвращает данные по выплатам в организации для текущего плана
	 * @return  ResultEngine, содержащий в поле <code>obj</code>, массив элементов типа 
     * {@link Plan_details_pay Plan_details_pay} (если успешно) или null и объект ошибки в поле <code>error</code>
	 */
    public ResultEngine getPlan_details_pay() {
        ResultEngine res = null;
		Statement st = null;
		ResultSet rs = null;
		ArrayList<Plan_details_pay> al = new ArrayList<>();
		try {
			st = Glob.getConnection().createStatement();
			String q = "SELECT id FROM plan_details_pay WHERE plan_id=" + plan_id;
			rs = st.executeQuery(q);
			while(rs.next()){
				al.add(new Plan_details_pay(rs.getInt("id")));
			}
            return new ResultEngine(al, GlobalEngine.E_NO_ERROR);
		} 
		catch (SQLException ex) {
			Logger.getLogger(FermEngine.class.getName()).log(Level.SEVERE, null, ex);
		}catch (Exception ex) {
			Logger.getLogger(FermEngine.class.getName()).log(Level.SEVERE, null, ex);
		}		
		finally {
			try {
				rs.close();
				st.close();
			} catch (SQLException ex) {
				Logger.getLogger(FermEngine.class.getName()).log(Level.SEVERE, null, ex);
			}
		}
		return new ResultEngine(null, GlobalEngine.E_OBJECT_NOT_FOUND);
    }
    
    /**
	 * Метод возвращает данные по выплатам кредитов для текущего плана
	 * @return  ResultEngine, содержащий в поле <code>obj</code>, массив элементов типа 
     * {@link Plan_details_pay Plan_details_pay} (если успешно) или null и объект ошибки в поле <code>error</code>
	 */
    public ResultEngine getPlan_details_pay_credit() {
        ResultEngine res = null;
		Statement st = null;
		ResultSet rs = null;
		ArrayList<Plan_details_pay_credit> al = new ArrayList<>();
		try {
			st = Glob.getConnection().createStatement();
			String q = "SELECT id FROM plan_details_pay_credit WHERE plan_id=" + plan_id;
			rs = st.executeQuery(q);
			while(rs.next()){
				al.add(new Plan_details_pay_credit(rs.getInt("id")));
			}
            return new ResultEngine(al, GlobalEngine.E_NO_ERROR);
		} 
		catch (SQLException ex) {
			Logger.getLogger(FermEngine.class.getName()).log(Level.SEVERE, null, ex);
		}catch (Exception ex) {
			Logger.getLogger(FermEngine.class.getName()).log(Level.SEVERE, null, ex);
		}		
		finally {
			try {
				rs.close();
				st.close();
			} catch (SQLException ex) {
				Logger.getLogger(FermEngine.class.getName()).log(Level.SEVERE, null, ex);
			}
		}
		return new ResultEngine(null, GlobalEngine.E_OBJECT_NOT_FOUND);
    }
    
	public void setDateBeg(GregorianCalendar dateBeg) {
		this.dateBeg = dateBeg;
	}

	public void setDateEnd(GregorianCalendar dateEnd) {
		this.dateEnd = dateEnd;
	}

	public void setRealizeDay(GregorianCalendar realizeDay) {
		this.realizeDay = realizeDay;
	}

	public void setRealized(boolean realized) {
		this.realized = realized;
	}

	public GregorianCalendar getDateBeg() {
		return dateBeg;
	}

	public GregorianCalendar getDateEnd() {
		return dateEnd;
	}

	public GregorianCalendar getRealizeDay() {
		return realizeDay;
	}

	public boolean isRealized() {
		return realized;
	}
	
	
}
